//1.引入模块
var conn = require("./baseDb.js")

//2.向外暴露对象方法
module.exports = {
    getNavMenusData(callback){ // 获取导航菜单数据
        //写sql语句查询导航菜单数据,在options表中获取某一项的数据
        var sql = "select `value` from options where `key`='nav_menus'";
        conn.query(sql,(err,result)=>{
            if(err) return callback(err)
            //把查询的字符串数据转为数组
            console.log(result)
            callback(null, JSON.parse(result[0]["value"]))
        })
    },
    addNewNavMenus(navInfo,callback){ //添加导航数据
        //1.读取数据库中的数据
        //2.将读取字符串数据转为数组对象
        //3.给这个数组添加传递过来的数据
        //调用读取导航菜单数据
        this.getNavMenusData((err,result)=>{
            if(err) return callback(err)
            //读取成功,因为获取的数据已经是数组对象
            var arr = result;  // 把后端数据重新赋值,避免变量冲突
            arr.push(navInfo) // 把前端的数据存到后端数据,形成新数据
            //把新数据转为字符串形式
            var str = JSON.stringify(arr)
            //写sql重新更新数据
            var sql = "update options set `value`='"+str+"' where `key`='nav_menus'"
            conn.query(sql,(err,result)=>{
                if(err) return callback(err)
                callback(null,arr) // 将之前形成的新数据返回前端
            })
        })
    },
    delNavMenusByIndex(index,callback){
        //调用读取数据库数据的方法
        this.getNavMenusData((err,result)=>{
            if(err) return callback(err)
            //把数据库读取转化的数据数据重新赋值给变量arr
            var arr = result
            //根据请求的索引删除数组中的数据
            arr.splice(index,1);
            //把删除后的数据转为字符串形式存回数据库
            var str = JSON.stringify(arr)
            //写sql语句更新数据库数据
            var sql = "update options set `value` = '"+str+"' where `key`='nav_menus'";
            conn.query(sql,(err,result)=>{
                if(err) return callback(err)
                
                callback(null, arr) // 把删除后的新数据返回前端
            })
        })
    }


}